-
Notifications
You must be signed in to change notification settings - Fork 14.4k
[BOLT] Improve exception handling in NFC-Mode #146513
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: users/paschalis-mpeis/nfc-check-remove-wrapper-logic
Are you sure you want to change the base?
[BOLT] Improve exception handling in NFC-Mode #146513
Conversation
✅ With the latest revision this PR passed the Python code formatter. |
@llvm/pr-subscribers-bolt Author: Paschalis Mpeis (paschalis-mpeis) ChangesThis patch introduce the following improvements:
Full diff: https://github.com/llvm/llvm-project/pull/146513.diff 1 Files Affected:
diff --git a/bolt/utils/nfc-check-setup.py b/bolt/utils/nfc-check-setup.py
index 4884e616a0fa3..497f3997545ff 100755
--- a/bolt/utils/nfc-check-setup.py
+++ b/bolt/utils/nfc-check-setup.py
@@ -80,18 +80,27 @@ def main():
source_dir = None
# find the repo directory
- with open(f"{args.build_dir}/CMakeCache.txt") as f:
- for line in f:
- m = re.match(r"LLVM_SOURCE_DIR:STATIC=(.*)", line)
- if m:
- source_dir = m.groups()[0]
- if not source_dir:
- sys.exit("Source directory is not found")
+ try:
+ CMCacheFilename = f"{args.build_dir}/CMakeCache.txt"
+ with open(CMCacheFilename) as f:
+ for line in f:
+ m = re.match(r"LLVM_SOURCE_DIR:STATIC=(.*)", line)
+ if m:
+ source_dir = m.groups()[0]
+ if not source_dir:
+ raise Exception(f"Source directory not found: '{CMCacheFilename}'")
+ except Exception as e:
+ sys.exit(e)
# build the current commit
+ print("NFC-Setup: Building current revision..")
subprocess.run(
shlex.split("cmake --build . --target llvm-bolt"), cwd=args.build_dir
)
+
+ if not os.path.exists(bolt_path):
+ sys.exit(f"Failed to build the current revision: '{bolt_path}'")
+
# rename llvm-bolt
os.replace(bolt_path, f"{bolt_path}.new")
# memorize the old hash for logging
@@ -122,12 +131,18 @@ def main():
subprocess.run(shlex.split(f"git checkout -f {args.cmp_rev}"), cwd=source_dir)
# get the parent commit hash for logging
new_ref = get_git_ref_or_rev(source_dir)
+
# build the previous commit
+ print("NFC-Setup: Building previous revision..")
subprocess.run(
shlex.split("cmake --build . --target llvm-bolt"), cwd=args.build_dir
)
+
# rename llvm-bolt
+ if not os.path.exists(bolt_path):
+ sys.exit(f"Failed to build the previous revision: '{bolt_path}'")
os.replace(bolt_path, f"{bolt_path}.old")
+
if args.switch_back:
if stash:
subprocess.run(shlex.split("git stash pop"), cwd=source_dir)
|
Deals cases like this: The previous revision had build failures which caused an exception during renaming. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for fixing this.
This patch introduce the following improvements: - Catch an exception when the CMakeCache.txt is not present - Bail out gracefully when llvm-bolt did not build successfully the current or previous revision.
6648b77
to
09363a8
Compare
Forced-push to rebase since the parent PR now has a In the latest patch,
I also delete llvm-bolt at the start, since we rebuild it for the current revision anyway. Update: @aaupov, requested review again so you are aware of the changes. |
This patch introduce the following improvements:
current or previous revision.
--switch-back
even if building the old revision failed